//package com.kun.companion.core.queue.thread;
//
//import org.jetbrains.annotations.NotNull;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.util.concurrent.ThreadFactory;
//import java.util.concurrent.atomic.AtomicInteger;
//
///**
// * 任务线程工厂
// * <p>
// * 用于创建具有统一命名规则和异常处理机制的任务执行线程，特性包括：
// * 1. 默认自动生成递增的线程名称（TaskWorker-{n}）
// * 2. 统一设置为守护线程（daemon thread）
// * 3. 全局未捕获异常处理
// * </p>
// *
// * @author gzc
// * @since 2025/2/3
// **/
//public class TaskThreadFactory implements ThreadFactory {
//    private static final Logger log = LoggerFactory.getLogger(TaskThreadFactory.class);
//
//    public TaskThreadFactory() {
//        this("TaskWorker-");
//    }
//
//    public TaskThreadFactory(String prefixName) {
//        super();
//        this.prefixName = prefixName;
//    }
//
//    private final String prefixName;
//    /**
//     * 线程计数器（线程安全）
//     * <p>用于生成唯一递增的线程编号</p>
//     */
//    private final AtomicInteger threadCounter = new AtomicInteger(0);
//
//    /**
//     * 创建新线程
//     *
//     * @param runnable 要执行的任务对象
//     * @return 配置好的线程实例
//     */
//    @Override
//    public Thread newThread(@NotNull Runnable runnable) {
//        Thread thread = new Thread(runnable);
//        configureThread(thread);
//        return thread;
//    }
//
//    /**
//     * 配置线程属性
//     */
//    private void configureThread(Thread thread) {
//        // 设置为守护线程（随主线程退出自动终止）
//        thread.setDaemon(true);
//
//        // 生成唯一线程名称（格式：TaskWorker-<序号>）
//        thread.setName(prefixName + "-" + threadCounter.getAndIncrement());
//
//        // 全局异常捕获（防止线程静默失败）
//        thread.setUncaughtExceptionHandler((t, ex) ->
//                log.error("线程[{}]发生未捕获异常: {}", t.getName(), ex.getMessage(), ex)
//        );
//
//        if (log.isDebugEnabled()) {
//            log.debug("创建新任务线程: {}", thread.getName());
//        }
//    }
//}